package main

import (
	"encoding/json"
	"github.com/gin-gonic/gin"
)

func main() {
	json.Marshal(Param{})
	r := gin.Default()
	r.GET("/", func(c *gin.Context) {
		c.String(200, "hello")
	})
	r.POST("/", func(c *gin.Context) {
		param := Param{}
		err := c.ShouldBind(&param)
		if err != nil {
			c.String(200, "%+v", err)
		}
		c.JSON(200, param)
	})
	r.Run(":8081")
}

type Param struct {
	Info1 Info1 `json:"info_1"`
}

type Info1 struct {
	Info2 Info2 `json:"info_2"`
}

type Info2 struct {
	TestStr string `json:"test_str"`
	TestInt int    `json:"test_int"`
	Info3   Info3  `json:"info_3"`
}
type Info3 struct {
	TestBool bool  `json:"test_bool" binding:"required"`
	Info4    Info4 `json:"info_4"`
}
type Info4 struct {
	TestStr string `json:"test_str"`
	Info5   Info5  `json:"info_5"`
}
type Info5 struct {
	Info6 Info6 `json:"info_6"`
}
type Info6 struct {
	TestStr string `json:"test_str"`
}
